As technology advances, data storage is becoming increasingly important and data storage capacities are increasing rapidly. Correspondingly, the size of data storage arrays and their demands for storage have increased rapidly. As a result, increasingly complex data storage systems are used to satisfy the demands for secure data storage and retrieval.
In order to ensure the ability to keep operating after a component failure, all data in a computer system may need to remain accessible. Traditionally, the approach to ensure data availability in the presence of component failures has been to separate data storage from data processing, construct data storage system without single points of failure, and share such data storage systems among the data processing systems. Separating data storage from data processing has a number of drawbacks, however, including increased overall system complexity, duplicate and thus more complicated planning and management, and generally lower overall system flexibility, agility, density, scalability and efficiency. Integrating data storage with data processing eliminates such artificial system boundaries and their drawbacks, but traditionally renders the data storage devices inaccessible upon failure of associated processing components.
Thus, a need exists to share data storage devices contained in a computer system with one or more other computer systems, and keep such data storage devices accessible upon a failure of a component in the computer systems.
A typical prior art approach (often named “Network RAID”) uses multiple computer systems that contain data storage devices. In order to not lose access to data when such a computer system or a component thereof fails, the data is replicated on multiple such computer systems using either traditional RAID encoding schemes, erasure codes or similar encoding schemes, such that the data can be reconstructed even if one or more of the computer systems fail. In such a setup, the data is sent from one computer system to another over traditional computer networks by the CPU on a motherboard contained in the computer system. In such a configuration, each computer system can only access the storage devices contained in itself.